#ifndef __CN_CMD_EXEATTR_H
#define __CN_CMD_EXEATTR_H
#include "fifo_exeattr.h"
#include <string.h>
#include "stdlib.h"
#include "cn_tcpserver.h"
#include "task.h"

typedef enum
{
//公共部分 编号0-50
    COMPLETE                = 0,    //操作正常完成
    FRAME_FORM_ERR          = 1,    //帧格式错误
    FRAME_LEN_ERR           = 2,    //帧长度错误
    FRAME_CHECKSUM_ERR      = 3,    //帧校验错误
    FRAME_REPEAT_ERR        = 4,    //帧重复
    CMD_NOTSUPPORT_ERR      = 5,    //命令不支持
    DATA_AREA_ERR           = 6,    //数据域无效
    DEVICE_BUSY_ERR         = 7,    //设备忙
	UPGRADE_VERAPP_ERR      = 8,    //APP升级版本与底层版本一样
	UPGRADE_VERIAP_ERR      = 9, 	//IAP升级版本与底层版本一样
	APP_CHECKSUM_ERR        = 10,    //升级APP校验错误
	IAP_CHECKSUM_ERR        = 11,    //升级IAP校验错误
	NO_CMD                  = 13,   //命令码不存在
	NO_ACK                  = 14,   //不回应，这个编号只用于底层，并不会回传给中间件
	NO_EXE                  = 15,   //指令没有执行接口
	CMD_MINE                = 16,
    SYS_APP                 = 17, //当前在APP运行中，指令不执行
    SYS_IAP                 = 18, //当前在IAP运行中，指令不执行  
    ERASE_FLASH_ERR         = 19
} MsgResult_t;                      //消息操作结果枚举量

#pragma pack(1)
struct attr_exe_data
{
    uint32_t cmd;                              //指令号
    MsgResult_t (*exe_attr)(uint8_t*,uint16_t,uint8_t*,uint8_t*,uint32_t,uint32_t); //exe函数入口                      
};
#pragma pack()
MsgResult_t Msg_Execute(uint8_t *sdata, uint32_t len);
#endif

